﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dominio;

namespace Interfaz
{
    public partial class VentanaVentas : UserControl
    {
        #region atributos

        private static VentanaVentas instance;
        private Cliente actualCliente;
        private Articulo actualArticulo;
        //private TipoDocumento actualTipoDocumento;
        private List<TipoDocumento> lTiposDocumento;
        private List<Cliente> lClientes;
        private List<Articulo> lArticulos;
        private List<MedioDePago> lMediosDePago;

        #endregion

        #region constructor

        public VentanaVentas()
        {
            InitializeComponent();
            lTiposDocumento = Sistema.getTiposDeDocumento();
            lClientes = Sistema.getClientes();
            lArticulos = Sistema.getArticulos();
            lMediosDePago = Sistema.getMediosDePago();
            comboBoxTipoDoc.DataSource = lTiposDocumento;
            comboBoxClientes.DataSource = lClientes;
            comboBoxArticulo.DataSource = lArticulos;
            comboBoxMediosDePago.DataSource = lMediosDePago;
        }

        public static VentanaVentas getInstance()
        {
            if (instance == null)
            {
                instance = new VentanaVentas();
            }
            //instance.limpiarCampos();
            return instance;
        }


        #endregion

        #region eventos

        private void BotonAceptar_Click(object sender, EventArgs e)
        {

        }

        private void BotonAgregar_Click(object sender, EventArgs e)
        {

        }

        private void TextoCant_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int num = int.Parse(TextoCant.Text);
            }
            catch (Exception)
            {
                TextoCant.Text = "0";
            }
        }

        private void TextoNumCliente_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int num = int.Parse(TextoNumCliente.Text);
                buscarCliente(num);
            }
            catch (Exception)
            {
                TextoNumCliente.Text = "0";
            }
        }

        private void TextoArt_TextChanged(object sender, EventArgs e)
        {
            try
            {
                buscarArticulo(TextoArt.Text);
            }
            catch (Exception)
            {
                TextoArt.Text = "";
            }
        }

        private void comboBoxClientes_SelectedIndexChanged(object sender, EventArgs e)
        {
            cargarDatosCliente();
        }

        private void comboBoxArticulo_SelectedIndexChanged(object sender, EventArgs e)
        {
            cargarDatosArticulo();
        }

        #endregion

        #region metodos

        private void cargarDatosCliente()
        {
            if (comboBoxClientes.SelectedIndex != -1)
            {
                actualCliente = (Cliente)comboBoxClientes.SelectedItem;
                TextoNumCliente.Text = actualCliente.OID.ToString();
                LabelNomCliente.Text = actualCliente.Nombre;
                labelPlanDePagoNombre.Text = actualCliente.PlanDePago.Nombre;
            }
        }

        private void cargarDatosArticulo()
        {
            if (comboBoxArticulo.SelectedIndex != -1)
            {
                actualArticulo = (Articulo)comboBoxArticulo.SelectedItem;
                TextoArt.Text = actualArticulo.Codigo.ToString();
            }
        }

        private void buscarCliente(int idCliente)
        {
            bool encontre = false;
            for (int i = 0; i < lClientes.Count; i++)
            {
                Cliente cliAux = (Cliente)comboBoxClientes.Items[i];
                if (cliAux.OID == idCliente)
                {                    
                    comboBoxClientes.SelectedIndex = i;
                    cargarDatosCliente();
                    i = lClientes.Count;
                    encontre = true;
                }
            }
            if (!encontre)
            {
                actualCliente = null;
                LabelNomCliente.Text = "";
                labelPlanDePagoNombre.Text = "";
            }
        }

        private void buscarArticulo(string codArticulo)
        {
            bool encontre = false;
            for (int i = 0; i < lArticulos.Count; i++)
            {
                Articulo artAux = (Articulo)comboBoxArticulo.Items[i];
                if (artAux.Codigo.Equals(codArticulo.ToLower()))
                {
                    comboBoxArticulo.SelectedIndex = i;
                    cargarDatosArticulo();
                    i = lArticulos.Count;
                    encontre = true;
                }
            }
            if (!encontre)
            {
                actualArticulo = null;
                comboBoxArticulo.SelectedIndex = -1;
            }
        }

        #endregion
    }
}
